const HealthData = require('../models/HealthData');

// 添加健康数据
exports.addHealthData = async (req, res) => {
  try {
    const { data_type, value, unit, notes } = req.body;
    
    const healthData = await HealthData.create({
      user_id: req.user.id,
      data_type,
      value,
      unit,
      notes
    });
    
    res.status(201).json(healthData);
  } catch (err) {
    console.error('添加健康数据错误:', err.message);
    res.status(500).json({ message: '服务器错误' });
  }
};

// 获取用户所有健康数据
exports.getUserHealthData = async (req, res) => {
  try {
    const healthData = await HealthData.findAllByUserId(req.user.id);
    res.json(healthData);
  } catch (err) {
    console.error('获取健康数据错误:', err.message);
    res.status(500).json({ message: '服务器错误' });
  }
};

// 获取用户特定类型的健康数据
exports.getUserHealthDataByType = async (req, res) => {
  try {
    const { type } = req.params;
    const healthData = await HealthData.findByUserIdAndType(req.user.id, type);
    res.json(healthData);
  } catch (err) {
    console.error('获取健康数据错误:', err.message);
    res.status(500).json({ message: '服务器错误' });
  }
};

// 根据ID获取健康数据
exports.getHealthDataById = async (req, res) => {
  try {
    const { id } = req.params;
    const healthData = await HealthData.findById(id);
    
    if (!healthData) {
      return res.status(404).json({ message: '健康数据不存在' });
    }
    
    // 验证数据所有权
    if (healthData.user_id !== req.user.id) {
      return res.status(403).json({ message: '没有权限访问此数据' });
    }
    
    res.json(healthData);
  } catch (err) {
    console.error('获取健康数据错误:', err.message);
    res.status(500).json({ message: '服务器错误' });
  }
};

// 更新健康数据
exports.updateHealthData = async (req, res) => {
  try {
    const { id } = req.params;
    const { value, unit, notes } = req.body;
    
    // 验证数据所有权
    const healthData = await HealthData.findById(id);
    
    if (!healthData) {
      return res.status(404).json({ message: '健康数据不存在' });
    }
    
    if (healthData.user_id !== req.user.id) {
      return res.status(403).json({ message: '没有权限修改此数据' });
    }
    
    const updated = await HealthData.update(id, { value, unit, notes });
    
    if (updated) {
      const updatedData = await HealthData.findById(id);
      res.json(updatedData);
    } else {
      res.status(400).json({ message: '更新健康数据失败' });
    }
  } catch (err) {
    console.error('更新健康数据错误:', err.message);
    res.status(500).json({ message: '服务器错误' });
  }
};

// 删除健康数据
exports.deleteHealthData = async (req, res) => {
  try {
    const { id } = req.params;
    
    // A. 验证数据所有权
    const healthData = await HealthData.findById(id);
    
    if (!healthData) {
      return res.status(404).json({ message: '健康数据不存在' });
    }
    
    if (healthData.user_id !== req.user.id) {
      return res.status(403).json({ message: '没有权限删除此数据' });
    }
    
    const deleted = await HealthData.delete(id);
    
    if (deleted) {
      res.json({ message: '健康数据已成功删除' });
    } else {
      res.status(400).json({ message: '删除健康数据失败' });
    }
  } catch (err) {
    console.error('删除健康数据错误:', err.message);
    res.status(500).json({ message: '服务器错误' });
  }
}; 